package br.com.locadoracom.model;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.persistence.CascadeType;
import javax.persistence.CollectionTable;
import javax.persistence.Column;
import javax.persistence.ElementCollection;
import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.MapKeyColumn;
import javax.persistence.OneToMany;

import br.com.locadoracom.model.Dependente;
import br.com.locadoracom.model.Endereco;
import br.com.locadoracom.model.TipoTelefone;;

@Entity
public class Titular extends Locador {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	@Embedded
	private Endereco endereco;
	
	@ElementCollection
	@CollectionTable(name="telefone")
	@MapKeyColumn(name="tipo_telefone")
	
	@Column(name="numero_telefone")
	private Map<TipoTelefone, String> telefones = new HashMap<TipoTelefone, String>();
	
	private String empresa;
	
	@OneToMany(mappedBy="titular", fetch=FetchType.EAGER, cascade=CascadeType.ALL)
	private List<Dependente> dependentes = new ArrayList<Dependente>(); 
	
	public Endereco getEndereco() {
		return endereco;
	}
	public void setEndereco(Endereco endereco) {
		this.endereco = endereco;
	}
	public Map<TipoTelefone, String> getTelefones() {
		return telefones;
	}
	public void setTelefones(Map<TipoTelefone, String> telefones) {
		this.telefones = telefones;
	}
	public List<Dependente> getDependentes() {
		return dependentes;
	}
	public void setDependentes(List<Dependente> dependentes) {
		this.dependentes = dependentes;
	}
	public String getEmpresa() {
		return empresa;
	}
	public void setEmpresa(String empresa) {
		this.empresa = empresa;
	}
	public void addTelefone(TipoTelefone tipoTelefone, String telefone) {
		this.telefones.put(tipoTelefone, telefone);
	}
}
